//<<clase>>
estadoAnimacion = function(){
	
	
	//seteamos el tipo de animacion inicial
	var _tipoAnimacion = (CONSTANTS.TIPO_ANIMACION_INICIAL == undefined)? "FROM_ABOVE_STAIRS_COMPLETE_ANIM" : CONSTANTS.TIPO_ANIMACION_INICIAL;
		
	var _tipoAnimacionCamara = (CONSTANTS.TIPO_ANIMACION_CAMARA_INICIAL == undefined)? "CONSTANTE" : CONSTANTS.TIPO_ANIMACION_CAMARA_INICIAL;
	
	var _estados = ["playing","paused","stopped"];
//	var _estados = ["playing","paused","stopped","finished"];
	
	//<publica> para cambiar el tipo de animacion
	this.setTipoAnimacion = function(tipo){
		if ($.inArray(tipo, estadoAnimacion.tiposAnimacionFlat) == -1){
	    	alert("ERROR. Tipo de Animacion");//TODO
			return;
		}
		_tipoAnimacion = tipo;
	};
	
	this.getTipoAnimacion = function(){return _tipoAnimacion;};
	
	
	//<publica> 	
	this.setTipoAnimacionCamara = function(tipo){
		if ($.inArray(tipo, estadoAnimacion.tiposAnimacionCamaraFlat) == -1){
			alert("ERROR. Tipo de Animacion Camara");//TODO 
			return;
		}
		_tipoAnimacionCamara = tipo;
	};
	
	this.getTipoAnimacionCamara = function(){return _tipoAnimacionCamara;};
	
	
	this.frameActual = null;
	this.estado = "stopped";
	
	this.reiniciar = function(){
		this.estado = "stopped";
		//this.frameActual = null;
		this.frameActual = 0;
	};
	
	
	//deprecated
	this.actualizarEstado = function(value){
		if ($.inArray(value, _estados) == -1){
	    	alert("ERROR. El estado: "+value+"de animacion no es valido");//TODO
			return;
		}
		this.estado = value;
		//updatePlayPauseButton(this.estado);//TODO ooooooooooooooooooooo
	};
	

	

	
};

//------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------

//<<VARIABLES 'estaticas'>>
//tipos de animacion para la visualizacion del camino 
estadoAnimacion.tiposAnimacion = [	                      
        	                      {tipo:"FROM_ABOVE_NO_STAIRS_ANIM", name: "2D", desc:"camara 90°. sin anim escaleras"},
        	                 //     {tipo:"FROM_ABOVE_STAIRS_COMPLETE_ANIM_FOLLOW", name: "2,5D", desc:"animacion escaleras completa. no reposiciona si hay otra escalera cerca"},
        	                  //    {tipo:"CHASE_REPOSITION_POINTS", name: "BEHIND", desc:"perseguir la linea, reposicionando la camara"},
        	                  //    {tipo:"CHASE_ALL", name: "CHASE", desc:"perseguir la linea en todo momento"},
        	                    //dep  {tipo:"FROM_ABOVE_STAIRS_COMPLETE_ANIM", desc:"animacion escaleras completa"},
        	                     //dep {tipo:"FROM_ABOVE_STAIRS_SIMPLE_ANIM", desc:"animacion escaleras mirando al norte"},
        						  {tipo:"LOOK_AT", name: "3D", desc:"camara fija. animacion de la orientacion"}]; //3D = look at


//tipos de animacion de la camara durante la animacion del camino
estadoAnimacion.tiposAnimacionCamara = [{tipo: "CONSTANTE", desc:"Tiempo constante"},
                      {tipo:"VARIABLE", desc:"Variable segun "}];


estadoAnimacion.tiposAnimacionFlat = [];
estadoAnimacion.tiposAnimacionCamaraFlat = [];

//inicializacion de las estructuras Flat (TODO: eliminarlas. recorrer el arreglo no flat)
(function(){
	var aux = estadoAnimacion.tiposAnimacion;
	var auxFlat = estadoAnimacion.tiposAnimacionFlat; 
	
	//hago un arreglo solo con los tipos de animacion
	for (var i = 0, l =  aux.length; i<l; i++){
		auxFlat[i] = aux[i].tipo;
	}

	aux =  estadoAnimacion.tiposAnimacionCamara;
	auxFlat = estadoAnimacion.tiposAnimacionCamaraFlat;
	for (var i = 0, l = aux.length; i<l; i++){
		auxFlat[i] = aux[i].tipo;
	}
})();


